package hotel;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class AggiungiCamera extends JFrame implements ActionListener{
	private ResultSet rs = null;
	private Vector<String> row;
	private JPanel pannello;
	private JLabel nome,posti,mat;
	private JTextField nomeStanza;
	private JComboBox numeroPersone;
	private JComboBox matrimoniale;
	private String[] clienti={"1","2","3","4"};
	private String[] sino={"NO","SI"};
	private JButton aggiungi;
	private GraficaHotel g;
	
	
	public AggiungiCamera(GraficaHotel g){
		this.g=g;
		this.setTitle("Aggiungi Camera");
		this.setLocation(350, 250);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setResizable(false);
		pannello=new JPanel();
		nome=new JLabel("Numero Stanza:");
		pannello.add(nome);
		nomeStanza=new JTextField(5);
		pannello.add(nomeStanza);
		posti=new JLabel("Posti:");
		pannello.add(posti);
		numeroPersone=new JComboBox(clienti);
		pannello.add(numeroPersone);
		numeroPersone.addActionListener(this);
		mat=new JLabel("Matrimoniale:");
		mat.setVisible(false);
		pannello.add(mat);
		matrimoniale=new JComboBox(sino);
		matrimoniale.setVisible(false);
		pannello.add(matrimoniale);
		aggiungi=new JButton("Aggiungi");
		aggiungi.addActionListener(this);
		pannello.add(aggiungi);
		add(pannello);
		this.setVisible(true);
		this.pack();
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==numeroPersone){
			if(Integer.valueOf((String) numeroPersone.getSelectedItem())>1){
				mat.setVisible(true);
				matrimoniale.setVisible(true);
				this.pack();
			}else{
				mat.setVisible(false);
				matrimoniale.setVisible(false);
				this.pack();
			}
		}else if(e.getSource()==aggiungi){
			try {
				if(!nomeStanza.getText().equals("")){
				boolean flag=false;
				if(matrimoniale.getSelectedItem().equals("SI"))
					flag=true;
					if(!GraficaHotel.database.query("INSERT INTO CAMERE(numero,numeroposti,numpostioccupati,matrimoniale,stato)" +
						" VALUES('"+nomeStanza.getText()+"',"+numeroPersone.getSelectedItem()+
						",0,"+flag+",'DISPONIBILE')")){
						ImageIcon iconax=new ImageIcon("Risorse/x4.png");
					JOptionPane.showMessageDialog(null, "Stanza "+nomeStanza.getText()+" gia' presente nel Database!",
							"ERRORE", JOptionPane.ERROR_MESSAGE,iconax);
					}
					else{
						ImageIcon icona=new ImageIcon("Risorse/v5.png");
						JOptionPane.showMessageDialog(null,"Camera inserita correttamente!","Ottimo",JOptionPane.INFORMATION_MESSAGE,icona);
						aggiungiRiga();
						this.dispose();
						g.setVisible(true);
					}
				}else
					JOptionPane.showMessageDialog(null,"Campo nome vuoto!");
			} catch (SQLException | IOException e1) {
				e1.printStackTrace();
			}
		}
	}
	
	
	private void aggiungiRiga() throws SQLException {
		int c = 0;
		int count = GraficaHotel.modelCamere.getRowCount();
		count++;
		rs = GraficaHotel.database.stat.executeQuery("SELECT * FROM CAMERE");
		ResultSetMetaData md = rs.getMetaData();
		int columnCount = md.getColumnCount();
		row = new Vector<String>(columnCount);
		if (count == 0) {
			for (int i = 2; i <= columnCount; i++) {
				row.add(rs.getString(i));
			}
			GraficaHotel.modelCamere.addRow(row);
		} else {
			while (rs.next()) {
				c++;
				if (count == c) {
					for (int i = 2; i <= columnCount; i++) {
						if (i!=4)
							row.add(rs.getString(i));
					}
					GraficaHotel.modelCamere.addRow(row);
				}
			}
		}
	}
}
